The capabilities of host computer environments have expanded significantly with the increased development of peripheral devices for attachment to the host computer. A variety of peripheral components are now available for use by the end user applications. For example, the peripheral environment may include external devices such as disk arrays, tapes, CD-ROMs, printers, network controllers, optical scanners, and various other apparatus that provide a wide range of functionality.
The external peripheral environment is typically connected to the host computer environment using suitable bus architecture. The Small Computer System Interface (SCSI) is one example of such a bus topology. Other types of bus topologies include Serial Attached SCSI (SAS) and Fibre Channel. In a typical arrangement of a bus topology, the host computer is configured with a host adapter provided in the form of a controller to provide the proper interfacing between the host bus, such as peripheral component interconnect (PCI), and the bus environment. The host computer will also include suitable device drivers for the installed peripheral devices.
The SCSI, SAS and Fibre Channel communication protocols employ a transaction process between a device configured as an initiator and a device configured as a target. Any device may be equipped with both functionalities. The initiator originates a request for an action or task to be performed, while a target receives and performs the requested task as expressed in a suitable command structure. For this purpose, the target typically includes a controller that enables it to perform the initiator-developed commands in a manner relatively independently of the initiator. A bus is used to transport data, command, and control information between the initiator and target.
In order to ensure correct operation of a bus protocol, a variety of tests are typically performed to determine proper initiator and target operation. For example, proper validation of an initiator may include the introduction of error conditions, corner cases of protocol, and non-standard data management. However, these behavioral characteristics are difficult to reproduce by using production or standard drives.
The use of a traffic generator, otherwise known in the art as a traffic jammer, has also been utilized to validate operation of initiators and targets. A traffic generator injects errors but does not have the capability of emulating varying target behaviors such as a data request size command for a particular input/output operation or controlling data transfer timing within a connection. Consequently, a method and apparatus for providing a complete validation of an initiator and target within bus architecture is necessary.